Java数据结构总结之Map

Java中使用Map接口描述映射结构,映射Map是一个独立的接口,描述的是键key-值value的对应关系,Map不允许键重复,并且每个键只能对应这个值。

一、映射集(Map)常用方法

1.size():获取Map的尺寸(即Map包含数据元素key-value对的总数)。

2.put(Object key, Object value):向Map中添加数据元素,key为键,value为值,键和值是一一对应关系。

3.remove(Object key):根据键key从Map中移除数据元素。并返回被删除元素的值value。

4.get(Object key):通过Map的key值获取对应的value值。

5.containsKey(Object obj):判断当前Map中是否包含键obj,如果包含返回true,否则返回false。

6.keySet():返回由Map中的所有键组成懂得集合。

7.entrySet():将Map中的键-值对存入集合,该集合的数据元素是Entry类的对象,Entry类具有两个成员变量key和value来描述原Map中的键和值。

8.values():获取Map中的全部值组成一个Collection对象。

HashMap(散列图)

1.HashMap通过hash算法排布存储Map中的键(key),HashMap也是最常用的图状数据结构,其存储的数据元素是成对出现的,也就是说每一个键(key)对应一个值(value)。

2.HashMap中的数据元素不是按照我们添加的顺序排布的,并且其内存模式也不是连续的,但是其key值得排布是根据Hash算法获得的,所以在数据元素的检索方面速度还是较快的。

3.HashMap不能直接装入迭代器,必须将HashMap的所有键key装入迭代器,再进行遍历,或者是使用Entry类,将所有数据元素转化为Entry的集合进行处理。

注意:HashMap不允许出现重复的键(key),并且每个键(key)只能对应一个值(value)。

Map转化Entry集合

/**  定义一个接口回调hMap对象

   *设置键为Integer类型,值为String类型 */

Map<Integer, String > hMap = new HashMap<Integer, String>();

/** 向HashMap中添加数据元素(key为整型,value为字符串型)*/

hMap.put(1,"aaa");

hMap.put(2,"bbb");

hMap.put(3,"ccc");

/** 将HashMap转化成Entry的集合

   *Entry是一个类,该类具有成员变量key和成员变量value */

Set<Entry<Integer, String>> hSet = hMap.entrySet();

Iterator<Entry<Integer, String>> it = hSet.iterator();

while(it.hasNext()){

       Entry<Integer, String> type = (Entry<Integer,String>)   it.next();

       int k = type.getKey();

       String v = type.getValue();

       System.out.println(k + "-"  + v);

}


TreeMap(树状映射集)

1.TreeMap是一种有序的映射关系,即每对键key-值value在TreeMap中是有序排列的,并且这个序列遵循自然序列,当我们向TreeMap插入新的数据元素时,TreeMap可能会重新排序,所以TreeMap中的任何元素在整个映射组中是不固定的。

2.当我们的TreeMap键(key)是自定义类时,需要在自定义类中重写compareTo方法,以提供比对形式,否在TreeMap不能对用户自定义额类型的键(key)进行正确的树状排序,也就不能对整个键值对起到有效的排序效果。

TreeMap的特殊方法:

1.firstKey():获取TreeMap第一个Key值

2.lastKey():获取TreeMap最后一个key值

3.headMap(end):获取TreeMap中从第一个开始到end-1位置的所有元素,组成一个排序映射(SortedMap)

4.tailMap(start):获取TreeMap中从start开始到最后一个元素之间的所有元素,组成一个排序映射(SortedMap)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容

  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,213评论 0 16
  • 1 Map集合N016 1.1Map接口 【 • 实现Map接口的集合类用来存储"键-值"映射对。 • JDK...
    征程_Journey阅读 362评论 0 0
  • Map接口 Map是 一个键值对的集合。也就是说,一个映射不能包含重复的键,每个键最多映射到一个值。该接口取代了D...
    wame100阅读 759评论 0 0
  • 你永远分不清 是先有明天还是先有再见 能活在当下 就别虚度光阴
    仨两小事阅读 194评论 0 4
  • 问题描述### 输入一个整数n,然后简化为求一组各不相同的数,它们的和等于n,它们的乘积最大。 难点### 需要不...
    Shiki阅读 532评论 0 1